/**
 * 自适应图片助手
 * 
 * 根据设备屏幕尺寸自动选择合适的图片尺寸
 */

const imageSizeMap = require('./image_size_map');

/**
 * 获取自适应图片路径
 * @param {string} originalPath 原始图片路径
 * @return {string} 适合当前设备的图片路径
 */
function getAdaptiveImage(originalPath) {
  // 获取设备信息
  const systemInfo = wx.getSystemInfoSync();
  const screenWidth = systemInfo.windowWidth;
  
  // 使用图片尺寸映射获取合适的图片路径
  return imageSizeMap.getAdaptiveImagePath(originalPath, screenWidth);
}

/**
 * 为页面批量预处理图片路径
 * @param {Object} pageData 页面数据对象
 * @param {Array<string>} imageKeys 需要处理的图片字段名
 */
function adaptPageImages(pageData, imageKeys) {
  if (!pageData || !imageKeys || !Array.isArray(imageKeys)) return pageData;
  
  const systemInfo = wx.getSystemInfoSync();
  const screenWidth = systemInfo.windowWidth;
  
  const result = {...pageData};
  
  for (const key of imageKeys) {
    if (result[key]) {
      if (Array.isArray(result[key])) {
        // 处理图片数组
        result[key] = result[key].map(img => {
          if (typeof img === 'string') {
            return imageSizeMap.getAdaptiveImagePath(img, screenWidth);
          } else if (typeof img === 'object' && img.src) {
            // 如果是对象，且有src属性
            img.src = imageSizeMap.getAdaptiveImagePath(img.src, screenWidth);
            return img;
          }
          return img;
        });
      } else if (typeof result[key] === 'string') {
        // 处理单个图片字符串
        result[key] = imageSizeMap.getAdaptiveImagePath(result[key], screenWidth);
      } else if (typeof result[key] === 'object' && result[key].src) {
        // 处理包含src属性的对象
        result[key].src = imageSizeMap.getAdaptiveImagePath(result[key].src, screenWidth);
      }
    }
  }
  
  return result;
}

module.exports = {
  getAdaptiveImage,
  adaptPageImages
};